#ifdef __TOOL_ONLY

#include "../Libraries/String/String.h"

typedef std::vector< String >		strvec_t;
typedef	strvec_t::iterator			strvec_itt;

// Sound Filename Manager
struct SoundFile
{
	String	m_name;
	String	m_filename;
};

typedef std::vector<SoundFile>		sndvec_t;
typedef	sndvec_t::iterator			sndvec_itt;

struct Category
{
	String		m_name;
	String		m_path;
	sndvec_t	m_sounds;
};

typedef std::vector<Category>		catvec_t;
typedef	catvec_t::iterator			catvec_itt;


struct Variable
{
	String		m_name;
	float		m_min;
	float		m_max;
	float		m_initial;
};

typedef std::vector<Variable>		varvec_t;
typedef varvec_t::iterator			varvec_itt;

struct Point
{
	float x,y;
};
typedef std::vector<Point>			pntvec_t;
typedef pntvec_t::iterator			pntvec_itt;

struct Graph
{
	String		m_name;
	pntvec_t	m_points;
};
typedef std::vector<Graph>			grhvec_t;
typedef grhvec_t::iterator			grhvec_itt;


struct Effect
{
	GraphHandle		m_graphID;
	VariableHandle	m_varID;
	unsigned		m_effect;
};
typedef std::vector<Effect>			efxvec_t;
typedef efxvec_t::iterator			efxvec_itt;

struct SubEvent
{
	String			m_soundName;
	float			m_triggerTime;
	efxvec_t		m_effects;
};
typedef std::vector<SubEvent>		subvec_t;
typedef subvec_t::iterator			subvec_itt;

struct Event
{
	String		m_name;
	subvec_t	m_subEvents;
};
typedef std::vector<Event>			eventvec_t;
typedef eventvec_t::iterator		eventvec_itt;


struct ToolData
{
	catvec_t	m_categories;
	varvec_t	m_variables;
	grhvec_t	m_graphs;
	eventvec_t	m_events;
};

#endif